const multipart = require('connect-multiparty');
const multipartMiddleware = multipart();

const OSS = require('ali-oss')

const client = new OSS({
	// yourregion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
	region: 'oss-cn-hangzhou',
	// 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
	accessKeyId: 'LTAI5tHJTQHJCoE2vjc8qryB',
	accessKeySecret: 'ng4Awxs9ay6DKM4p1ZkxymEMyyOKVC',
	// 填写Bucket名称。
	bucket: '2008b-1',
});

client.useBucket("2008b-1");

module.exports = app => {
	app.post('/api/upload', multipartMiddleware, async (req, res) => {
		try {
			const { name, path } = req.files.file

			const result = await client.put(name, path)

			res.send({
				code: 200,
				data: result
			})
		} catch (e) {
			res.send({
				code: 400,
				message: '上传失败',
				error: e
			})
		}
	})

	app.get('/api/upload/list', async (req, res) => {
		try {
			const result = await client.list();

			res.send({
				code: 200,
				data: result,
				message: '请求数据成功'
			})
		} catch (e) {
			res.send({
				code: 400,
				message: '获取目录失败',
				error: e
			})
		}
	})

	app.delete('/api/upload/delete', async (req, res) => {
		// 获取删除文件的名字
		const { name } = req.query
		// 请求 oss 删除
		try {
			// 填写Object完整路径。Object完整路径中不能包含Bucket名称。
			let result = await client.delete(name);
			console.log(result);
			res.send({
				code: 200,
				message: '删除成功'
			})
		} catch (error) {
			res.send({
				code: 400,
				message: '删除失败',
				error
			})
		}
	})
}